home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / utils / gemfut15.lzh / AESUTRS2.C < prev    next >
C/C++ Source or Header  |  1990-05-26  |  2KB  |  61 lines

  1.  
  2. /**************************************************************************
  3.  *
  4.  * AESFAST PD utilties.
  5.  *
  6.  *  Resource-related utilities 2...
  7.  *   rsc_gstrings
  8.  *
  9.  * 05/26/90 - v1.4
  10.  *            > Coded a C version of this routine.
  11.  *            > Added support for ICONs.
  12.  *************************************************************************/
  13.  
  14. #include <gemfast.h>
  15.  
  16. /*-------------------------------------------------------------------------
  17.  * rsc_gstrings - Get string pointers within rsc tree.
  18.  *
  19.  *   Will this work with MWC?  Good question, it depends on how MWC puts
  20.  *   parms on the stack...
  21.  *-----------------------------------------------------------------------*/
  22.  
  23. typedef struct {
  24.     int  object;
  25.     long *stringptr;
  26.     } OBJSTR;
  27.     
  28. void
  29. rsc_gstrings(ptree, parms)
  30.     register OBJECT *ptree;
  31.     OBJSTR          parms[];
  32. {
  33.     register OBJECT *pobj;
  34.     register OBJSTR *pparms;
  35.     register long   *pspec;
  36.     
  37.     for (pparms = parms; pparms->object >= 0; pparms++) {
  38.         pobj  = &ptree[pparms->object];
  39.         pspec = &(pobj->ob_spec);
  40.  
  41.         if (pobj->ob_flags & INDIRECT) {
  42.             pspec = (long *)*pspec;
  43.         }
  44.         
  45.         switch (pobj->ob_type & 0x00FF) {
  46.         case G_ICON:
  47.             pspec = (long *)*pspec;
  48.             pspec = &pspec[2];      /* add 12-byte offset to pointer */
  49.             break;              
  50.         case G_TEXT:
  51.         case G_BOXTEXT:
  52.         case G_FTEXT:
  53.         case G_FBOXTEXT:
  54.             pspec = (long *)*pspec;
  55.             break;
  56.         }
  57.  
  58.         *(pparms->stringptr) = *pspec;
  59.     }
  60. }
  61.